#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project ：pytest_allure_pytest-html_study 
@File    ：01_baseis_test.py
@IDE     ：PyCharm 
@Author  ：XiaoDengYa
@Date    ：2021/6/4/004 14:05 
"""

# 1、命令行模式
"""
安装： pip install -U pytest (已有更新)
      pip install pytest -i  http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
查看版本： pytest --version
运行所有用例：pytest
运行某文件下的用例，pytest 文件名   （简单显示结果 pytest -q 文件名）（详细显示pytest -v文件名）
运行文件名下的class  pytest -v 文件名::类名
运行文件下的函数  pytest -v 文件名::类名::方法名
遇到错误停止测试：pytest 文件名 -x
6、-q 简单打印，只打印测试用例的执行结果  pytest -q start.py
7、-s 详细打印  pytest -s start.py
8、-x 遇到错误时停止测试   pytest start.py -x
9、—maxfail=num，当用例错误个数达到指定数量时，停止测试  pytest start.py --maxfail=1
10、-k 匹配用例名称（执行测试用例名称包含http的所有用例） pytest -s -k http start.py
11、-k 根据用例名称排除某些用例  pytest -s -k "not http" start.py
12、-k 同时匹配不同的用例名称  pytest -s -k "method or weibo" start.py
"""

# 2、使用断言
"""
assert xx ：判断 xx 为真
assert not xx ：判断 xx 不为真
assert a in b ：判断 b 包含 a
assert a == b ：判断 a 等于 b
assert a != b ：判断 a 不等于 b
# 异常断言
    例子：
    def test_zero_division():
        with pytest.raises(ZeroDivisionError):(预期报的异常是：ZeroDivisionError)
            1/0

# 检查器断言装饰器
@pytest.mark.xfail(raises=ZeroDivisionError): # 断言会出现该异常，该用例就不会执行失败
def test_f():
    1/0            
"""

# setuo和teardown的使用
"""
模块级别：setup_module、teardown_module (在整个模块中只执行一次)
函数级别：setup_function、teardown_function，不在类中的方法 （在整个函数中执行一次）
类级别：setup_class、teardown_class （在一个类里面执行一次）
方法级别：setup_method、teardown_method （每个方法都执行一遍）
方法细化级别：setup、teardown （方法里面细化前后执行）
"""